﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using System.Data;
using AcadPosApp.Utilidades;
using System.Web.Security;

namespace AcadPosApp.Cadastros
{
    public partial class CadastroTurmas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtDtFim.Attributes.Add("onfocusout", "checarDatas");
                carregaAreasConhecimento();
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                pnlCadastro.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConfirmar.ClientID + "')");
                txtCadPesqCoord.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultaCoord.ClientID + "')");
                carregaEstados();
                ddlEstadoPesquisa.SelectedValue = "1";
                carregaPolo();
            }
        }

        private void carregaEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
        }

        private void carregaEstadosCadastro()
        {
            ddlCadEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlCadEstado.DataTextField = "ESTADO";
            ddlCadEstado.DataValueField = "ID_ESTADO";
            ddlCadEstado.DataBind();
        }

        private void carregaPolo()
        {
            Polo polo = new Polo();
            polo.IdEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNPolo.listaPolosEstado(polo);
            ddlPoloPesquisa.DataSource = dt;
            ddlPoloPesquisa.DataTextField = "DESCRICAO";
            ddlPoloPesquisa.DataValueField = "ID_POLO";
            ddlPoloPesquisa.DataBind();
            if (dt.Rows.Count > 0)
            {
                ddlPoloPesquisa.Enabled = true;
            }
            else
                ddlPoloPesquisa.Enabled = false;
        }

        private void carregaPoloCadastro()
        {
            Polo polo = new Polo();
            polo.IdEstado = Convert.ToInt32(ddlCadEstado.SelectedValue);
            DataTable dt = ControlClass.CNPolo.listaPolosEstado(polo);
            ddlCadPolo.DataSource = dt;
            ddlCadPolo.DataTextField = "DESCRICAO";
            ddlCadPolo.DataValueField = "ID_POLO";
            ddlCadPolo.DataBind();

        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregaGridPesquisa();
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            if (gvwPesquisa.Rows.Count > 0)
            {
                gvwPesquisa.SelectedIndex = 0;
                carregaCurriculosCurso();
                gvwPesquisaTurmas.Visible = false;
            }

        }

        private void carregaGridPesquisa()
        {
            gvwPesquisa.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtPesquisa.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNCurso.listarCursos(curso);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        private void carregaGridPesquisaCadastro()
        {
            gvwCursoCadastro.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtCadDescricao.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlCadAreaConhecimento.SelectedValue);
            gvwCursoCadastro.DataSource = ControlClass.CNCurso.listarCursos(curso);
            gvwCursoCadastro.DataBind();
            gvwCursoCadastro.SelectedIndex = -1;
        }

        private void carregaAreasConhecimento()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlAreaConhecimento.DataTextField = "DESCRICAO";
            ddlAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlAreaConhecimento.DataBind();
        }

        //private void carregaAreasConhecimentoCadastro()
        //{
        //    AreaConhecimento area = new AreaConhecimento();
        //    area.Descricao = string.Empty;
        //    ddlCadAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
        //    ddlCadAreaConhecimento.DataTextField = "DESCRICAO";
        //    ddlCadAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
        //    ddlCadAreaConhecimento.DataBind();
        //}

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregaGridPesquisa();
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void ddlAreaConhecimento_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = false;
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
        }

        protected void btnInserir_Click(object sender, EventArgs e)
        {
            if (gvwPesquisa.SelectedIndex > -1 && ddlCurriculoPesquisa.SelectedValue != "" && ddlPoloPesquisa.SelectedValue != "")
            {
                btnConfirmar.CommandName = "Inserir";
                pnlCadastro.Visible = true;
                pnlPesquisa.Enabled = false;
                carregaAreasConhecimentoCadastro();
                ddlCadAreaConhecimento.SelectedValue = ddlAreaConhecimento.SelectedValue.ToString();
                txtCadDescricao.Text = Server.HtmlDecode(gvwPesquisa.Rows[gvwPesquisa.SelectedIndex].Cells[2].Text.ToString());

                Curso curso = new Curso();
                curso.IdAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
                curso.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
                gvwCursoCadastro.DataSource = ControlClass.CNTurma.listarCursosPorCodigo(curso);
                gvwCursoCadastro.DataBind();
                gvwCursoCadastro.SelectedIndex = 0;
                gvwCursoCadastro.Enabled = false;


                Curriculo curriculo = new Curriculo();
                curriculo.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
                DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
                ddlCadCurriculo.DataSource = dt;
                ddlCadCurriculo.DataTextField = "COD_CURRICULO_SITUACAO";
                ddlCadCurriculo.DataValueField = "ID_CURRICULO";
                ddlCadCurriculo.DataBind();
                ddlCadCurriculo.SelectedValue = ddlCurriculoPesquisa.SelectedValue;

                ModuloCurriculo moduloCurriculo = new ModuloCurriculo();
                moduloCurriculo.IdCurriculo = Convert.ToInt32(ddlCadCurriculo.SelectedValue);
                ddlCadModulo.DataSource = ControlClass.CNModuloCurriculo.listaModulosCurriculo(moduloCurriculo);
                ddlCadModulo.DataTextField = "DESCRICAO_MODULO";
                ddlCadModulo.DataValueField = "ID_MODULO";
                ddlCadModulo.DataBind();

                carregaEstadosCadastro();
                ddlCadEstado.SelectedValue = ddlEstadoPesquisa.SelectedValue;
                carregaPoloCadastro();
                ddlCadPolo.SelectedValue = ddlPoloPesquisa.SelectedValue;

                gvwCoordenador.Visible = false;
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione um curso para inserir um currículo e/ou currículo!")), true);
            }
        }

        private void carregaAreasConhecimentoCadastro()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlCadAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlCadAreaConhecimento.DataTextField = "DESCRICAO";
            ddlCadAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlCadAreaConhecimento.DataBind();
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaCurriculosCurso();
            gvwPesquisaTurmas.Visible = false;
        }

        private void carregaCurriculosCurso()
        {
            ddlCurriculoPesquisa.Enabled = true;
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCurriculoPesquisa.DataSource = dt;
            ddlCurriculoPesquisa.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCurriculoPesquisa.DataValueField = "ID_CURRICULO";
            ddlCurriculoPesquisa.DataBind();
            if (dt.Rows.Count <= 0)
            {
                ddlCurriculoPesquisa.Enabled = false;
                ddlCurriculoPesquisa.Items.Clear();
            }
        }

        private void carregaCurriculosCursoCadastro()
        {
            ddlCadCurriculo.Enabled = true;
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwCursoCadastro.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCadCurriculo.DataSource = dt;
            ddlCadCurriculo.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCadCurriculo.DataValueField = "ID_CURRICULO";
            ddlCadCurriculo.DataBind();
            if (dt.Rows.Count <= 0)
            {
                ddlCadCurriculo.Enabled = false;
                ddlCadCurriculo.Items.Clear();
            }
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaPolo();
            gvwPesquisaTurmas.Visible = false;
        }

        protected void ddlCurriculoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = false;
        }

        protected void btnConsultarTurmas_Click(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = true;
            carregaTurmas();

        }

        private void carregaTurmas()
        {
            Turma turma = new Turma();
            turma.IdCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
            turma.IdPolo = Convert.ToInt32(ddlPoloPesquisa.SelectedValue);
            gvwPesquisaTurmas.DataSource = ControlClass.CNTurma.listaTurmas(turma);
            gvwPesquisaTurmas.DataBind();
            gvwPesquisaTurmas.SelectedIndex = -1;
        }

        protected void gvwPesquisaTurmas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisaTurmas.PageIndex = e.NewPageIndex;
            carregaTurmas();
        }

        protected void gvwPesquisaTurmas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Turma turma = new Turma();
                int index = int.Parse((String)e.CommandArgument);
                turma.IdTurma = Convert.ToInt32(gvwPesquisaTurmas.DataKeys[index]["ID_TURMA"].ToString());
                turma = ControlClass.CNTurma.listaTurmasObj(turma);
                string usuario = User.Identity.Name;

                if (e.CommandName == "Alterar")
                {
                    pnlCadastro.Visible = true;
                    pnlPesquisa.Enabled = false;
                    carregaAreasConhecimentoCadastro();
                    ddlCadAreaConhecimento.SelectedValue = turma.IdAreaConhecimento.ToString();
                    txtCadDescricao.Text = Server.HtmlDecode(gvwPesquisa.Rows[gvwPesquisa.SelectedIndex].Cells[2].Text.ToString());

                    Curso curso = new Curso();
                    curso.IdAreaConhecimento = turma.IdAreaConhecimento;
                    curso.IdCurso = turma.IdCurso;
                    gvwCursoCadastro.DataSource = ControlClass.CNTurma.listarCursosPorCodigo(curso);
                    gvwCursoCadastro.DataBind();
                    gvwCursoCadastro.SelectedIndex = 0;
                    gvwCursoCadastro.Enabled = false;


                    Curriculo curriculo = new Curriculo();
                    curriculo.IdCurso = turma.IdCurso;
                    DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
                    ddlCadCurriculo.DataSource = dt;
                    ddlCadCurriculo.DataTextField = "COD_CURRICULO_SITUACAO";
                    ddlCadCurriculo.DataValueField = "ID_CURRICULO";
                    ddlCadCurriculo.DataBind();
                    ddlCadCurriculo.SelectedValue = turma.IdCurriculo.ToString();

                    Modulo modulo = new Modulo();
                    modulo.Descricao = "";
                    ddlCadModulo.DataSource = ControlClass.CNModulo.listarModulos(modulo);
                    ddlCadModulo.DataTextField = "DESCRICAO";
                    ddlCadModulo.DataValueField = "ID_MODULO";
                    ddlCadModulo.DataBind();
                    ddlCadModulo.SelectedValue = turma.IdModulo.ToString();

                    carregaEstadosCadastro();
                    ddlCadEstado.SelectedValue = turma.IdEstado.ToString();
                    carregaPoloCadastro();
                    ddlCadPolo.SelectedValue = turma.IdPolo.ToString();

                    gvwCoordenador.DataSource = ControlClass.CNTurma.listarProfissionalPorCodigo(turma);
                    gvwCoordenador.DataBind();
                    gvwCoordenador.SelectedIndex = 0;
                    txtCadPesqCoord.Text = Server.HtmlDecode(gvwCoordenador.Rows[gvwCoordenador.SelectedIndex].Cells[1].Text.ToString());

                    ddlLetraTurma.SelectedValue = turma.LetraTurma;
                    txtQtdeParcelas.Text = turma.QtdParcelas.ToString();
                    txtValor.Text = string.Format("{0:0,0.00}", Convert.ToDecimal(turma.Valor.ToString()));
                    txtDtInicio.Text = turma.DtInicio.ToShortDateString();
                    txtDtFim.Text = turma.DtFim.ToShortDateString();


                    if (Roles.IsUserInRole("Financeiro"))
                    {
                        pnlMatriculaBL.Visible = true;
                        ddlMatricula.SelectedValue = turma.MatriculaBloqLib;
                    }

                    if (Roles.IsUserInRole("Academico"))
                    {
                        pnlAulasBL.Visible = true;
                        ddlInicioAulas.SelectedValue = turma.AulasBloqLib;
                    }


                    ViewState["ID_TURMA"] = turma.IdTurma;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    DataTable dadosTurma = ControlClass.CNTurma.getDadosTurma(turma.IdTurma);

                    pnlCadastro.Visible = false;
                    if (ControlClass.CNTurma.excluir(turma, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        pnlCadastro.Visible = false;
                        pnlPesquisa.Enabled = true;
                        carregaTurmas();
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível realizar a operação. Por favor, tente novamente.")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("FK_TB_MATRIZ_CURRICULAR_TB_DISCIPLINA"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroChaveEstrangeira, "")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlCadastro.Visible = false;
                pnlPesquisa.Enabled = true;
            }
        }

        protected void gvwPesquisaTurmas_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton l = (ImageButton)e.Row.FindControl("EXCLUIR");
                l.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwPesquisaTurmas_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[11].Visible = true;
                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[11].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[11].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[11].Visible = false;
            }
            #endregion

            #region Configurando Imagem do Status Matricula
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[12].Visible = true;
                Image controle = (Image)e.Row.FindControl("imgStatusMatricula");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[12].Text.Trim()) == "S")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/block.png";
                e.Row.Cells[12].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[12].Visible = false;
            }
            #endregion

            #region Configurando Imagem do Status Aulas
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[13].Visible = true;
                Image controle = (Image)e.Row.FindControl("imgStatusAulas");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[13].Text.Trim()) == "S")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/block.png";
                e.Row.Cells[13].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[13].Visible = false;
            }
            #endregion
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Turma turma = new Turma();
                string usuario = User.Identity.Name;
                turma.IdModulo = Convert.ToInt32(ddlCadModulo.SelectedValue);
                turma.IdCurriculo = Convert.ToInt32(ddlCadCurriculo.SelectedValue);
                turma.IdPolo = Convert.ToInt32(ddlCadPolo.SelectedValue);
                turma.IdCoordenador = Convert.ToInt32(gvwCoordenador.SelectedValue);
                turma.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
                turma.LetraTurma = ddlLetraTurma.SelectedValue;
                turma.QtdParcelas = Convert.ToInt32(txtQtdeParcelas.Text);
                turma.Valor = Convert.ToDecimal(txtValor.Text);
                turma.DtInicio = Convert.ToDateTime(txtDtInicio.Text);
                turma.DtFim = Convert.ToDateTime(txtDtFim.Text);
                if (turma.DtFim <= turma.DtInicio)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "A data final não pode ser anterior a data inicial da Turma. Favor verificar!")), true);
                    txtDtFim.Text = string.Empty;
                    txtDtFim.Focus();
                }
                else
                {
                    turma.CodTurma = DateTime.Now.Year + turma.IdCurso.ToString() + turma.IdPolo.ToString() + turma.LetraTurma;
                    turma.IdModulo = Convert.ToInt32(ddlCadModulo.SelectedValue);

                    if (gvwCoordenador.SelectedIndex > -1)
                    {

                        if (btnConfirmar.CommandName == "Inserir")
                        {
                            if (!(ControlClass.CNTurma.validaTurma(turma)))
                            {
                                if (ControlClass.CNTurma.inserir(turma, usuario))
                                {
                                    finalizaOperacao();
                                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                                    carregaTurmas();
                                }
                                else
                                {
                                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível inserir a turma!")), true);
                                }
                            }
                            else
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Já existe uma turma para esse ano, curso, letra e polo!")), true);
                            }
                        }
                        else if (btnConfirmar.CommandName == "Alterar")
                        {

                            turma.IdTurma = Convert.ToInt32(ViewState["ID_TURMA"].ToString());
                            if (pnlMatriculaBL.Visible == true)
                            {
                                if (((ddlMatricula.SelectedValue == "S") && (ControlClass.CNTurma.validaLiberaMatricula(turma))) || (ddlMatricula.SelectedValue == "N"))
                                {
                                    turma.MatriculaBloqLib = ddlMatricula.SelectedValue;
                                }
                                else
                                {
                                    throw new Exception("A planilha financeira não se encontra cadastrada para liberar matrícula!");
                                }
                            }
                            if (pnlAulasBL.Visible == true)
                            {
                                if (((ddlInicioAulas.SelectedValue == "S") && (ControlClass.CNTurma.validaLiberaAulas(turma))) || (ddlInicioAulas.SelectedValue == "N"))
                                {
                                    turma.AulasBloqLib = ddlInicioAulas.SelectedValue;
                                }
                                else
                                {
                                    throw new Exception("Não existe ainda a quantidade mínima de matriculados para liberar aulas!");
                                }
                            }

                            if (ControlClass.CNTurma.alterar(turma, usuario))
                            {
                                finalizaOperacao();
                                pnlPesquisa.Enabled = true;
                                carregaTurmas();
                                pnlAulasBL.Visible = false;
                                pnlMatriculaBL.Visible = false;
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                            }
                        }

                    }

                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione um coordenador!")), true);

                    }
                }

            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("A planilha financeira"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, ex.Message)), true);
                if (ex.Message.Contains("Não existe ainda a quantidade mínima de matriculados!"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, ex.Message)), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        private void finalizaOperacao()
        {
            TrustX.Util.UtilForm.LimparCampos(pnlCadastro);
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            TrustX.Util.UtilForm.LimparCampos(pnlCadastro);
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;
        }

        protected void ddlCadEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaPoloCadastro();
        }

        protected void btnConsultaCoord_Click(object sender, EventArgs e)
        {
            string descricao = txtCadPesqCoord.Text;
            gvwCoordenador.Visible = true;
            gvwCoordenador.DataSource = ControlClass.CNTurma.listaCoordenadorDescricao(descricao);
            gvwCoordenador.DataBind();
            gvwCoordenador.SelectedIndex = -1;
            if (gvwCoordenador.Rows.Count > 0)
            {
                gvwCoordenador.SelectedIndex = 0;
            }
        }

        protected void gvwCoordenador_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwCoordenador.PageIndex = e.NewPageIndex;
            string descricao = txtCadPesqCoord.Text;
            gvwCoordenador.Visible = true;
            gvwCoordenador.DataSource = ControlClass.CNTurma.listaCoordenadorDescricao(descricao);
            gvwCoordenador.DataBind();
            gvwCoordenador.SelectedIndex = -1;
        }

        protected void gvwCoordenador_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtCadPesqCoord.Text = Server.HtmlDecode(gvwCoordenador.Rows[gvwCoordenador.SelectedIndex].Cells[1].Text.ToString());
        }

        protected void gvwCursoCadastro_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwCursoCadastro.PageIndex = e.NewPageIndex;
            carregaGridPesquisaCadastro();
        }

        protected void gvwCursoCadastro_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void gvwCursoCadastro_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaCurriculosCursoCadastro();

        }

        protected void btnConsultarCursoCad_Click(object sender, EventArgs e)
        {
            carregaGridPesquisaCadastro();
        }

        protected void ddlPoloPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = false;
        }

        protected void ddlCadCurriculo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void ddlCadModulo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void gvwCoordenador_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[3].Visible = true;
                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[3].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[3].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[3].Visible = false;
            }
            #endregion
        }

        protected void txtQtdeParcelas_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int qtdParcelas = Convert.ToInt32(txtQtdeParcelas.Text);
                txtDtInicio.Text = DateTime.Now.ToShortDateString();
                txtDtFim.Text = DateTime.Now.AddMonths(qtdParcelas).ToShortDateString();
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Preencha a quantidade de parcelas corretamente.")), true);
            }
        }





    }
}